home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
gamesrc
/
rtankasm
/
screen1.asm
< prev
next >
Wrap
Assembly Source File
|
1989-03-01
|
25KB
|
764 lines
ASSUME cs:_TEXT, DS:SEPDATA
SEPDATA SEGMENT WORD 'DATA'
public map, lmapX, lmapY, pmapX, pmapY, imagelist
public notile,corner,allwhite, allblue
public allred,road,grass,overwrite
; Tiles to draw
overwrite db 123
notile db 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h
corner db 055h, 055h, 040h, 000h
db 040h, 000h, 040h, 000h
db 040h, 000h, 040h, 000h
db 040h, 000h, 040h, 000h
allwhite db 0FFh, 0FFh, 0FFh, 0FFh
db 0FFh, 0FFh, 0FFh, 0FFh
db 0FFh, 0FFh, 0FFh, 0FFh
db 0FFh, 0FFh, 0FFh, 0FFh
allblue db 055h, 055h, 055h, 055h
db 055h, 055h, 055h, 055h
db 055h, 055h, 055h, 055h
db 055h, 055h, 055h, 055h
allred db 0AAh, 0AAh, 0AAh, 0AAh
db 0AAh, 0AAh, 0AAh, 0AAh
db 0AAh, 0AAh, 0AAh, 0AAh
db 0AAh, 0AAh, 0AAh, 0AAh
road db 000h, 000h, 000h, 000h
db 003h, 0C0h, 000h, 000h
db 000h, 000h, 003h, 0C0h
db 000h, 000h, 000h, 000h
grass db 055h, 055h, 0DDh, 055h
db 055h, 055h, 057h, 075h
db 075h, 055h, 057h, 055h
db 055h, 055h, 055h, 0D5h
swamp db 055h, 055h, 0CCh, 055h
db 055h, 055h, 053h, 035h
db 035h, 055h, 053h, 055h
db 055h, 055h, 055h, 0C5h
include brick.asm
include tree11.asm
include tree12.asm
include tree13.asm
include tree21.asm
include tree22.asm
include tree23.asm
include tree31.asm
include tree32.asm
include tree33.asm
include smtree.asm
include dead1a.asm
include dead1b.asm
include dead1c.asm
include dead1d.asm
include rocket1.asm
include rocket2.asm
include rocket3.asm
include rocket4.asm
include rocket5.asm
include rocket6.asm
include rocket7.asm
include rocket8.asm
include shot84.asm
include cannonbl.asm
include mach8.asm
include mach16.asm
include laser15.asm
include laser26.asm
include laser37.asm
include laser48.asm
include boom1.asm
include boom2.asm
include boom3.asm
include boom4.asm
include booma1.asm
include booma2.asm
include booma3.asm
include booma4.asm
include tank1d2a.asm
include tank1d2b.asm
include tank1d2c.asm
include tank1d2d.asm
include tank1d4a.asm
include tank1d4b.asm
include tank1d4c.asm
include tank1d4d.asm
include tank1d6a.asm
include tank1d6b.asm
include tank1d6c.asm
include tank1d6d.asm
include tank1d8a.asm
include tank1d8b.asm
include tank1d8c.asm
include tank1d8d.asm
include tank11a.asm
include tank11b.asm
include tank11c.asm
include tank11d.asm
include tank13a.asm
include tank13b.asm
include tank13c.asm
include tank13d.asm
include tank15a.asm
include tank15b.asm
include tank15c.asm
include tank15d.asm
include tank17a.asm
include tank17b.asm
include tank17c.asm
include tank17d.asm
include tank21a.asm
include tank21b.asm
include tank21c.asm
include tank21d.asm
include tank23a.asm
include tank23b.asm
include tank23c.asm
include tank23d.asm
include tank25a.asm
include tank25b.asm
include tank25c.asm
include tank25d.asm
include tank27a.asm
include tank27b.asm
include tank27c.asm
include tank27d.asm
include tank22a.asm
include tank22b.asm
include tank22c.asm
include tank22d.asm
include tank24a.asm
include tank24b.asm
include tank24c.asm
include tank24d.asm
include tank26a.asm
include tank26b.asm
include tank26c.asm
include tank26d.asm
include tank28a.asm
include tank28b.asm
include tank28c.asm
include tank28d.asm
include tank31a.asm
include tank31b.asm
include tank31c.asm
include tank31d.asm
include tank33a.asm
include tank33b.asm
include tank33c.asm
include tank33d.asm
include tank35a.asm
include tank35b.asm
include tank35c.asm
include tank35d.asm
include tank37a.asm
include tank37b.asm
include tank37c.asm
include tank37d.asm
include tank32a.asm
include tank32b.asm
include tank32c.asm
include tank32d.asm
include tank34a.asm
include tank34b.asm
include tank34c.asm
include tank34d.asm
include tank36a.asm
include tank36b.asm
include tank36c.asm
include tank36d.asm
include tank38a.asm
include tank38b.asm
include tank38c.asm
include tank38d.asm
imagelist dw notile ; pointers to images
dw corner
dw allwhite
dw allblue
dw allred
dw road
dw grass
dw swamp
dw brick
dw notile ; unused
dw notile ; unused
dw dead1a
dw dead1b
dw dead1c
dw dead1d
dw tree11
dw tree12
dw tree13
dw tree21
dw tree22 ; ---
dw tree23
dw tree31
dw tree32
dw tree33
dw smtree
dw cannonbl
dw rocket1
dw rocket2
dw rocket3
dw rocket4
dw rocket5
dw rocket6
dw rocket7
dw rocket8
dw mach8
dw mach16
dw laser15
dw laser26
dw laser37
dw laser48
dw tank1d8a
dw tank1d8b
dw tank1d8c
dw tank1d8d
dw tank1d2a
dw tank1d2b
dw tank1d2c
dw tank1d2d
dw tank1d4a
dw tank1d4b
dw tank1d4c
dw tank1d4d
dw tank1d6a
dw tank1d6b
dw tank1d6c
dw tank1d6d
dw tank11a
dw tank11b
dw tank11c
dw tank11d
dw tank13a
dw tank13b
dw tank13c
dw tank13d
dw tank15a
dw tank15b
dw tank15c
dw tank15d
dw tank17a
dw tank17b
dw tank17c
dw tank17d
dw boom1
dw boom2
dw boom3
dw boom4
dw booma1
dw booma2
dw booma3
dw booma4
dw tank21a
dw tank21b
dw tank21c
dw tank21d
dw tank23a
dw tank23b
dw tank23c
dw tank23d
dw tank25a
dw tank25b
dw tank25c
dw tank25d
dw tank27a
dw tank27b
dw tank27c
dw tank27d
dw tank22a
dw tank22b
dw tank22c
dw tank22d
dw tank24a
dw tank24b
dw tank24c
dw tank24d
dw tank26a
dw tank26b
dw tank26c
dw tank26d
dw tank28a
dw tank28b
dw tank28c
dw tank28d
dw tank31a
dw tank31b
dw tank31c
dw tank31d
dw tank33a
dw tank33b
dw tank33c
dw tank33d
dw tank35a
dw tank35b
dw tank35c
dw tank35d
dw tank37a
dw tank37b
dw tank37c
dw tank37d
dw tank32a
dw tank32b
dw tank32c
dw tank32d
dw tank34a
dw tank34b
dw tank34c
dw tank34d
dw tank36a
dw tank36b
dw tank36c
dw tank36d
dw tank38a
dw tank38b
dw tank38c
dw tank38d
dw 0
maxmapX dw 120 ; Logical maximum map dimensions
maxmapY dw 75
lmapX dw 0 ; Logical top left corner
lmapY dw 0 ; (lmapX, lmapY)
pmaxX dw 40 ; physical screen maximums
pmaxY dw 25
pmapX db 0 ; Physical top left corner of screen
pmapY db 0 ; (pmapX, pmapY)
wsizeX dw 20 ; Physical window size
wsizeY dw 12 ; (pmapX+wsizeX,pmapY+wsizeY)
jtable dw 50 dup(0) ; Screen jump table to Y axis
mapjtable dw 100 dup(0) ; Map jump table to each Y axis
map db 9000 dup(?) ; Map array, lists which tile
; appears where.
; Each entry is an index into
; the imagelist file
scrbuf db 16200 dup(?) ; Screen swap buffer
SEPDATA ENDS
_TEXT SEGMENT BYTE PUBLIC 'CODE'
PUBLIC _drawtile
PUBLIC _inittables
PUBLIC _regenscr
PUBLIC _refreshscr
PUBLIC _gotocga
PUBLIC _setlogXY
PUBLIC _setphyXY
PUBLIC _setwindXY
PUBLIC _setmapXY
PUBLIC _capturescr
PUBLIC _getmapXY
_drawtile proc
push bp
mov bp,sp
push ax
push bx
push si
push di
push ds
push es
push ax
mov ax,OFFSET SEPDATA
mov ds,ax
mov es,ax
xor ax,ax
mov al,dh
mov si,ax
shl si,1
add si,OFFSET jtable
mov di,[si]
mov al,dl
shl ax,1
add di,ax
add di,OFFSET scrbuf
pop ax
push di
mov si,ax
mov ax,80-2
; Even Lines
movsb
movsb
add di,ax
movsb
movsb
add di,ax
movsb
movsb
add di,ax
movsb
movsb
; Odd lines
pop di
mov bx,02000h
add di,bx
movsb
movsb
add di,ax
movsb
movsb
add di,ax
movsb
movsb
add di,ax
movsb
movsb
pop es
pop ds
pop di
pop si
pop bx
pop ax
pop bp
ret
_drawtile endp
_inittables proc
; Initilize the map table to 0 thru 8 alternately
push bp
mov bp,sp
push si
push cx
push ax
push ds
mov ax,OFFSET SEPDATA
mov ds,ax
mov si,OFFSET map
mov cx,9000
mov ax,0
fillmap: mov [si],al
inc si
inc ax
cmp ax,9
jnz contloop
mov ax,0
contloop:
loop fillmap
; Let's initilize the jump table
mov si,OFFSET jtable
mov ax,0
mov cx,25
filltable:
mov [si],ax
add ax,320
inc si
inc si
loop filltable
; Fill up Map jump table for Y coordinates
mov si,OFFSET mapjtable
mov ax,0
mov cx,75
ftable: mov [si],ax
add ax,[maxmapX]
inc si
inc si
loop ftable
pop ds
pop ax
pop cx
pop si
pop bp
ret
_inittables endp
_regenscr proc
push bp
mov bp,sp
push si
push ax
push dx
push bx
push cx
push di
push es
push ds
cli
mov ax,OFFSET SEPDATA
mov ds,ax
mov si,OFFSET mapjtable
mov ax,[lmapY]
shl ax,1
add si,ax
mov dx,[si]
add dx,[lmapX]
mov si,dx
add si,OFFSET map
; SI now points to the first tile to be displayed at (pmapX,pmapY)
mov bx,[wsizeY] ; Do this Y times
mov dh,[pmapY] ; init physical Y axis
doY:
mov cx,[wsizeX] ; Set up for nested loop
mov dl,[pmapX] ; init physical X axis
push si
doX:
xor ax,ax
mov al,[si] ; Get first map char
inc si
shl ax,1
mov di,OFFSET imagelist
add di,ax
mov ax,[ds:di] ; Get image pointer into DX
call _drawtile ; Draw the tile
inc dl ; Do next X
loop doX
pop si
add si,[maxmapX]
inc dh
dec bx
jnz doY ; Do next Y
sti
pop ds
pop es
pop di
pop cx
pop bx
pop dx
pop ax
pop si
pop bp
ret
_regenscr endp
_gotocga proc
push bp
mov bp,sp
push ax
push bx
mov ah,0
mov al,4
int 10h
mov ah,11
mov bl,0
mov bh,4
int 10h
pop bx
pop ax
pop bp
ret
_gotocga endp
_setlogXY proc
push bp
mov bp,sp
push ds
mov ax,OFFSET SEPDATA
mov ds,ax
mov ax,[bp+4]
mov [lmapX],ax
mov ax,[bp+6]
mov [lmapY],ax
pop ds
pop bp
ret
_setlogXY endp
_setphyXY proc
push bp
mov bp,sp
push ds
mov ax,OFFSET SEPDATA
mov ds,ax
mov ax,[bp+4]
mov [pmapX],al
mov ax,[bp+6]
mov [pmapY],al
pop ds
pop bp
ret
_setphyXY endp
_setwindXY proc
push bp
mov bp,sp
push ds
mov ax,OFFSET SEPDATA
mov ds,ax
mov ax,[bp+4]
mov [wsizeX],ax
mov ax,[bp+6]
mov [wsizeY],ax
pop ds
pop bp
ret
_setwindXY endp
_setmapXY proc
push bp
mov bp,sp
push ds
push si
push dx
mov ax,OFFSET SEPDATA
mov ds,ax
mov si,OFFSET mapjtable
mov ax,[bp+6]
shl ax,1
add si,ax
mov dx,[si]
add dx,[bp+4]
mov si,dx
add si,OFFSET map
mov ax,[bp+8]
cmp ax,0
jz nope
mov [si],al
nope: pop dx
pop si
pop ds
pop bp
ret
_setmapXY endp
_getmapXY proc
push bp
mov bp,sp
push ds
push si
push dx
mov ax,OFFSET SEPDATA
mov ds,ax
mov si,OFFSET mapjtable
mov ax,[bp+6]
shl ax,1
add si,ax
mov dx,[si]
add dx,[bp+4]
mov si,dx
add si,OFFSET map
mov ah,0
mov al,[si]
pop dx
pop si
pop ds
pop bp
ret
_getmapXY endp
_refreshscr proc
push bp
mov bp,sp
push ds
push es
push si
push di
push cx
cli
mov ax,OFFSET SEPDATA
mov ds,ax
mov ax,0B800h
mov es,ax
mov si,OFFSET scrbuf
mov cx,16192
mov di,0
rep movsb
sti
pop cx
pop di
pop si
pop es
pop ds
pop bp
ret
_refreshscr endp
_capturescr proc
push bp
mov bp,sp
push ds
push es
push si
push di
push cx
cli
mov ax,OFFSET SEPDATA
mov es,ax
mov ax,0B800h
mov ds,ax
mov si,0
mov cx,16192
mov di,OFFSET scrbuf
rep movsb
sti
pop cx
pop di
pop si
pop es
pop ds
pop bp
ret
_capturescr endp
_TEXT ENDS
END